sway_sources = files(
	'commands.c',
	'config.c',
	'criteria.c',
	'decoration.c',
	'ipc-json.c',
	'ipc-server.c',
	'lock.c',
	'main.c',
	'realtime.c',
	'scene_descriptor.c',
	'server.c',
	'sway_text_node.c',
	'swaynag.c',
	'xdg_activation_v1.c',
	'xdg_decoration.c',

	'desktop/idle_inhibit_v1.c',
	'desktop/layer_shell.c',
	'desktop/output.c',
	'desktop/transaction.c',
	'desktop/xdg_shell.c',
	'desktop/launcher.c',

	'input/input-manager.c',
	'input/cursor.c',
	'input/keyboard.c',
	'input/seat.c',
	'input/seatop_default.c',
	'input/seatop_down.c',
	'input/seatop_move_floating.c',
	'input/seatop_move_tiling.c',
	'input/seatop_resize_floating.c',
	'input/seatop_resize_tiling.c',
	'input/switch.c',
	'input/tablet.c',
	'input/text_input.c',

	'config/bar.c',
	'config/output.c',
	'config/seat.c',
	'config/input.c',

	'commands/assign.c',
	'commands/bar.c',
	'commands/bind.c',
	'commands/border.c',
	'commands/client.c',
	'commands/create_output.c',
	'commands/default_border.c',
	'commands/default_floating_border.c',
	'commands/default_orientation.c',
	'commands/exit.c',
	'commands/exec.c',
	'commands/exec_always.c',
	'commands/floating.c',
	'commands/floating_minmax_size.c',
	'commands/floating_modifier.c',
	'commands/focus.c',
	'commands/focus_follows_mouse.c',
	'commands/focus_on_window_activation.c',
	'commands/focus_wrapping.c',
	'commands/font.c',
	'commands/for_window.c',
	'commands/force_display_urgency_hint.c',
	'commands/force_focus_wrapping.c',
	'commands/fullscreen.c',
	'commands/gaps.c',
	'commands/gesture.c',
	'commands/hide_edge_borders.c',
	'commands/inhibit_idle.c',
	'commands/kill.c',
	'commands/mark.c',
	'commands/max_render_time.c',
	'commands/opacity.c',
	'commands/include.c',
	'commands/input.c',
	'commands/layout.c',
	'commands/mode.c',
	'commands/mouse_warping.c',
	'commands/move.c',
	'commands/new_float.c',
	'commands/new_window.c',
	'commands/no_focus.c',
	'commands/nop.c',
	'commands/output.c',
	'commands/popup_during_fullscreen.c',
	'commands/primary_selection.c',
	'commands/reload.c',
	'commands/rename.c',
	'commands/resize.c',
	'commands/scratchpad.c',
	'commands/seat.c',
	'commands/seat/attach.c',
	'commands/seat/cursor.c',
	'commands/seat/fallback.c',
	'commands/seat/hide_cursor.c',
	'commands/seat/idle.c',
	'commands/seat/keyboard_grouping.c',
	'commands/seat/pointer_constraint.c',
	'commands/seat/shortcuts_inhibitor.c',
	'commands/seat/xcursor_theme.c',
	'commands/set.c',
	'commands/show_marks.c',
	'commands/shortcuts_inhibitor.c',
	'commands/smart_borders.c',
	'commands/smart_gaps.c',
	'commands/split.c',
	'commands/sticky.c',
	'commands/swaybg_command.c',
	'commands/swaynag_command.c',
	'commands/swap.c',
	'commands/tiling_drag.c',
	'commands/tiling_drag_threshold.c',
	'commands/title_align.c',
	'commands/title_format.c',
	'commands/titlebar_border_thickness.c',
	'commands/titlebar_padding.c',
	'commands/unmark.c',
	'commands/urgent.c',
	'commands/workspace.c',
	'commands/workspace_layout.c',
	'commands/ws_auto_back_and_forth.c',
	'commands/xwayland.c',

	'commands/bar/bind.c',
	'commands/bar/binding_mode_indicator.c',
	'commands/bar/colors.c',
	'commands/bar/font.c',
	'commands/bar/gaps.c',
	'commands/bar/height.c',
	'commands/bar/hidden_state.c',
	'commands/bar/icon_theme.c',
	'commands/bar/id.c',
	'commands/bar/mode.c',
	'commands/bar/modifier.c',
	'commands/bar/output.c',
	'commands/bar/pango_markup.c',
	'commands/bar/position.c',
	'commands/bar/separator_symbol.c',
	'commands/bar/status_command.c',
	'commands/bar/status_edge_padding.c',
	'commands/bar/status_padding.c',
	'commands/bar/strip_workspace_numbers.c',
	'commands/bar/strip_workspace_name.c',
	'commands/bar/swaybar_command.c',
	'commands/bar/tray_bind.c',
	'commands/bar/tray_output.c',
	'commands/bar/tray_padding.c',
	'commands/bar/workspace_buttons.c',
	'commands/bar/workspace_min_width.c',
	'commands/bar/wrap_scroll.c',

	'commands/input/accel_profile.c',
	'commands/input/calibration_matrix.c',
	'commands/input/click_method.c',
	'commands/input/drag.c',
	'commands/input/drag_lock.c',
	'commands/input/dwt.c',
	'commands/input/dwtp.c',
	'commands/input/events.c',
	'commands/input/left_handed.c',
	'commands/input/map_from_region.c',
	'commands/input/map_to_output.c',
	'commands/input/map_to_region.c',
	'commands/input/middle_emulation.c',
	'commands/input/natural_scroll.c',
	'commands/input/pointer_accel.c',
        'commands/input/rotation_angle.c',
	'commands/input/repeat_delay.c',
	'commands/input/repeat_rate.c',
	'commands/input/scroll_button.c',
	'commands/input/scroll_button_lock.c',
	'commands/input/scroll_factor.c',
	'commands/input/scroll_method.c',
	'commands/input/tap.c',
	'commands/input/tap_button_map.c',
	'commands/input/tool_mode.c',
	'commands/input/xkb_capslock.c',
	'commands/input/xkb_file.c',
	'commands/input/xkb_layout.c',
	'commands/input/xkb_model.c',
	'commands/input/xkb_numlock.c',
	'commands/input/xkb_options.c',
	'commands/input/xkb_rules.c',
	'commands/input/xkb_switch_layout.c',
	'commands/input/xkb_variant.c',

	'commands/output/adaptive_sync.c',
	'commands/output/background.c',
	'commands/output/disable.c',
	'commands/output/dpms.c',
	'commands/output/enable.c',
	'commands/output/max_render_time.c',
	'commands/output/mode.c',
	'commands/output/position.c',
	'commands/output/power.c',
	'commands/output/render_bit_depth.c',
	'commands/output/scale.c',
	'commands/output/scale_filter.c',
	'commands/output/subpixel.c',
	'commands/output/toggle.c',
	'commands/output/transform.c',
	'commands/output/unplug.c',

	'tree/arrange.c',
	'tree/container.c',
	'tree/node.c',
	'tree/root.c',
	'tree/view.c',
	'tree/workspace.c',
	'tree/output.c',
)

sway_deps = [
	cairo,
	drm,
	jsonc,
	libevdev,
	libinput,
	libudev,
	math,
	pango,
	pcre2,
	pixman,
	threads,
	wayland_server,
	wlroots,
	xkbcommon,
	xcb,
	xcb_icccm,
]

if have_xwayland
	sway_sources += 'desktop/xwayland.c'
endif

if wlroots_features['libinput_backend']
	sway_sources += 'input/libinput.c'
endif

executable(
	'sway',
	sway_sources + wl_protos_src,
	include_directories: [sway_inc],
	dependencies: sway_deps,
	link_with: [lib_sway_common],
	install: true
)
